// 定义经纬度类型
export type LngLat = [number, number];

/**
 * Geocoder模块接口 - 定义模块对外暴露的结构
 */
export interface GeocoderModule {
  /** 模块名称 */
  name: string;
  /** Geocoder实例 */
  instance: {
    geocoder: any;
    autocomplete: any;
  };
  /** 事件处理对象 */
  events: {
    getLnglat: () => LngLat | null;
    getAddress: () => any;
    on: (eventName: string, callback: Function) => void;
    off: (eventName: string, callback?: Function) => void;
  };
}

/**
 * Geocoder配置选项
 */
export interface GeocoderOptions {
  /**
   * 城市
   * 可选值：城市名（中文或中文全拼）、citycode、adcode
   * 默认值：全国
   */
  city?: string;
  /** 逆地理编码时，以给定坐标为中心点，单位：米 */
  radius?: number;
  /** 语言 */
  lang?: string;
  /** 批量查询 */
  batch?: boolean;
  /** 逆地理编码时，是否返回地址详情 */
  extensions?: string;
}

// 定义额外参数接口
export interface ExtraOptions {
  // 是否编码逆地理编码
  reverseGeocoding?: boolean;
}
